"""
协程定义：
    协程是一种特殊的函数，它可以在执行过程中暂停和恢复，从而实现并发编程。
    协程的执行是由事件循环驱动的，事件循环会不断地检查是否有协程需要执行。
    协程的优点是可以在一个线程中同时执行多个任务，从而减少了线程之间的切换开销，提高了程序的执行效率。
    协程的缺点是需要手动管理协程的执行，否则可能会出现死锁等问题。
    协程的使用场景包括：网络编程、IO密集型任务、并行计算等。
ansyncio:
    asyncio是Python标准库中用于编写异步程序的模块，它提供了一种基于事件循环的异步编程模型。
    asyncio的核心概念包括：事件循环、任务、协程、Future、async/await关键字等。
    asyncio的优点是可以实现高效的并发编程，从而提高程序的执行效率。
    asyncio的缺点是需要手动管理协程的执行，否则可能会出现死锁等问题。
    asyncio的使用场景包括：网络编程、IO密集型任务、并行计算等。
httpio:
    httpio是Python标准库中用于编写HTTP客户端的模块，它提供了一种基于协程的异步编程模型。
    httpio的核心概念包括：HTTP客户端、HTTP服务器、HTTP协议、HTTP请求、HTTP响应等。
    httpio的优点是可以实现高效的HTTP客户端编程，从而提高程序的执行效率。
    httpio的缺点是需要手动管理HTTP客户端的执行，否则可能会出现死锁等问题。
    httpio的使用场景包括：网络编程、HTTP客户端编程、HTTP服务器编程等。
"""
# ansyncio
import asyncio
import aiohttp

async def fetch(session, url):
    """异步获取网页内容"""
    async with session.get(url) as response:
        content = await response.text()
        print(f"获取 {url} 的内容长度: {len(content)}")

async def main():
    urls = [
        "https://www.example.com",
        "https://www.google.com",
        "https://www.python.org"
    ]
    async with aiohttp.ClientSession() as session:
        tasks = [fetch(session, url) for url in urls]
        await asyncio.gather(*tasks)

if __name__ == "__main__":
    asyncio.run(main())

# httpio
import asyncio
import httpio  # 假设 httpio 是一个基于 asyncio 的异步 HTTP 客户端库

async def fetch(url):
    """异步发送 HTTP 请求"""
    response = await httpio.get(url)
    print(f"获取 {url} 的状态码: {response.status_code}")

async def main():
    urls = [
        "https://www.example.com",
        "https://www.google.com",
        "https://www.python.org"
    ]
    tasks = [fetch(url) for url in urls]
    await asyncio.gather(*tasks)

if __name__ == "__main__":
    asyncio.run(main())